<?php
namespace backend\controllers;

use backend\logic\LandlordLogic;
use Yii;

/**
 * 房东资源控制器
 *
 * Class LandlordController
 * @package backend\controllers
 */
class LandlordController extends BaseController
{
    public $enableCsrfValidation = false;
    /**
    * 房东创建房源动作
    *
    * @access public
    * @param mixed $arg1 参数一的说明
    * @param mixed $mixed 这是一个混合类型
    * @return array 返回类型
    */
    public function actionCreateHouseResouce()
    {
        $transaction = \Yii::$app->db->beginTransaction();
        try{
            $http_data = file_get_contents('php://input');
            $post = json_decode($http_data,true);
            if(!$post){
                $t = mt_rand(1,555);
                $post = [
                    'id'=>null,
                    'uid'=>123123, //'房东uid，表示房源属于哪个房东',
                    'names'=>"香港小21242区" . $t, //'房源名称，可用来当标签分类的',
                    'address'=>"湖北省武汉市雄楚大道雄楚大街4号",//'房源地址',
                    'resource_type'=>1,//'房源类型。0：整栋房源；1：分散房源',
                    'ridgepole'=>[
                        'resource_id'=>null,
                        'street_address'=>"关山大道曙光新城" , //'街道地址',
                        'floor_introduce'=> "这栋楼是1937年所建",//楼层介绍,
                        'elevator_status'=>1,//有无电梯。0：没有电梯，1：有电梯,
                        'floor_sum'=> 2,//楼层总数,
                        'house_num'=>1 ,//每一层有多少套房子,
                        'room_num'=>2 ,//每一套房里面有几间房子,
                    ],
                    'house_info'=>[
                        [
                            'resource_id'=>null,
                            'apportion'=>[  //此套房的分摊费用集合
                                [
                                    "names"=>"电费", //费用名称
                                    "cost_type"=>"1",//费用类型
                                    "cost_way"=>"微信",//收费方式，比如现金，支付宝，微信等'
                                    "charge_mode"=>"1",//计费方式，每种计费方式对应一个计费公式，0：正常计费模式，1：阶梯计费模式
                                    "cost_data"=>[[0,2,3],[2,5,6],[5,8,8]] ,//[[0,2,3],[2,5,6],[5,8,8]] 的json用于计算公式的计算数据，json字符串格式，如此便能存储阶段计费数据和正常计费数据.[0,2,3] 表示0-2阶梯收费值为3。 也可以直接为3，表示固定收费
                                    "cost_unit"=>"元",//费用单位，仅仅用于展示信息，不参与计算公式。0：=>度；1：立方米；2：吨；3：元
                                    "min"=>"20",//费用最低值。吨/度/立方 (不足'最低值'按'最低值'收)
                                    "period"=>"1",//收费周期
                                    "time"=>"15"//收费时间,每个月的几号收钱
                                ]
                            ],
                            'cost_ids'=>[  //此套房的独有费用集合
                                [
                                    "names"=>"水费", //费用名称
                                    "cost_type"=>"1",//费用类型
                                    "cost_way"=>"微信",//收费方式，比如现金，支付宝，微信等'
                                    "charge_mode"=>"1",//计费方式，每种计费方式对应一个计费公式，0：正常计费模式，1：阶梯计费模式
                                    "cost_data"=>[[0,2,3],[2,5,6],[5,8,8]] ,//[[0,2,3],[2,5,6],[5,8,8]] 的json用于计算公式的计算数据，json字符串格式，如此便能存储阶段计费数据和正常计费数据.[0,2,3] 表示0-2阶梯收费值为3。 也可以直接为3，表示固定收费
                                    "cost_unit"=>"元",//费用单位，仅仅用于展示信息，不参与计算公式。0：=>度；1：立方米；2：吨；3：元
                                    "min"=>"20",//费用最低值。吨/度/立方 (不足'最低值'按'最低值'收)
                                    "period"=>"1",//收费周期
                                    "time"=>"15"//收费时间,每个月的几号收钱
                                ]
                            ],
                            'house_type'=>"3,2,2",
                            'door_num'=>4312,
                            'house_fasility'=>[1,2,6],
                            'orientation'=>'朝北',
                            "house_space"=>125,
                            'floor_num'=>'6,5',
                            'area'=>'6,5',
                            'img_ids'=>'很偏组',
                            'remark'=>'不错的地方啊,风景宜人',
                            'disperse_type'=>0,
                            'status'=>1,
                            'rent'=>3600,
                            'pay_way'=>"1,3",
                            'room_info'=>[
                                [
                                    'house_info_id' => null,//yl_house_info的主键id
                                    'room_num'=>6522,//门牌号里面的套房里面的具体的某一间房子的编号
                                    'apportion'=>[  //此套房的独有费用集合
                                        [
                                            "names"=>"房子公摊水费", //费用名称
                                            "cost_type"=>"1",//费用类型
                                            "cost_way"=>"微信",//收费方式，比如现金，支付宝，微信等'
                                            "charge_mode"=>"1",//计费方式，每种计费方式对应一个计费公式，0：正常计费模式，1：阶梯计费模式
                                            "cost_data"=>[[0,2,3],[2,5,6],[5,8,8]] ,//[[0,2,3],[2,5,6],[5,8,8]] 的json用于计算公式的计算数据，json字符串格式，如此便能存储阶段计费数据和正常计费数据.[0,2,3] 表示0-2阶梯收费值为3。 也可以直接为3，表示固定收费
                                            "cost_unit"=>"元",//费用单位，仅仅用于展示信息，不参与计算公式。0：=>度；1：立方米；2：吨；3：元
                                            "min"=>"20",//费用最低值。吨/度/立方 (不足'最低值'按'最低值'收)
                                            "period"=>"1",//收费周期
                                            "time"=>"15"//收费时间,每个月的几号收钱
                                        ]
                                    ],
                                    'cost_ids'=>[  //此套房的独有费用集合
                                        [
                                            "names"=>"房子独有水费", //费用名称
                                            "cost_type"=>"1",//费用类型
                                            "cost_way"=>"微信",//收费方式，比如现金，支付宝，微信等'
                                            "charge_mode"=>"1",//计费方式，每种计费方式对应一个计费公式，0：正常计费模式，1：阶梯计费模式
                                            "cost_data"=>[[0,2,3],[2,5,6],[5,8,8]] ,//[[0,2,3],[2,5,6],[5,8,8]] 的json用于计算公式的计算数据，json字符串格式，如此便能存储阶段计费数据和正常计费数据.[0,2,3] 表示0-2阶梯收费值为3。 也可以直接为3，表示固定收费
                                            "cost_unit"=>"元",//费用单位，仅仅用于展示信息，不参与计算公式。0：=>度；1：立方米；2：吨；3：元
                                            "min"=>"20",//费用最低值。吨/度/立方 (不足'最低值'按'最低值'收)
                                            "period"=>"1",//收费周期
                                            "time"=>"15"//收费时间,每个月的几号收钱
                                        ]
                                    ],
                                    'room_name'=>"国产动漫组",//'房间名称',
                                    'room_type'=>"主卧",//房间类型，主卧，次卧'
                                    'pay_way'=>"1,3",//压几付几  例如   1,3 表示压一付三
                                    'sex'=>0,//房间对性别的要求。0：无要求，1男，2女
                                    'purpose'=>"居住",//用途
                                    'house_fasility'=>'1,2,3,6',//房源配置id集合。例如  1,2,3,4,5
                                    'room_space'=>15,//单间空间
                                    'rent'=>900,//单间租金
                                    'status'=>0,//待租状态，1：已经租出去了
                                ]
                            ]
                        ],
                    ]
                ];
                $post = json_encode($post);
            }
            $land = LandlordLogic::getInstance();
            $res = $land->createHouseResource($post);
            $transaction->commit();
            return $this->returnData($res);
        }catch (\Exception $e){
            $transaction->rollBack();
            return $this->returnData(var_export($e->getMessage(),true));
        }
    }
    /**
    * 展示所有房源
    *
    * @access public
    * @param mixed $arg1 参数一的说明
    * @param mixed $mixed 这是一个混合类型
    * @return array 返回类型
    */
    public function actionHouseResouceList()
    {
        try{
            $uid = Yii::$app->request->get('uid',null);
            if(empty($uid)){
                throw new \Exception('error');
            }
            $landlord = LandlordLogic::getInstance();
            $res = $landlord->houseResouceList($uid);
            return $this->returnData($res);
        }catch (\Exception $e){
            return $this->returnData(123,$e);
        }
    }
    /**
    * 房东展示某一处房源的房子信息
    *
    * @access public
    * @param mixed $arg1 参数一的说明
    * @param mixed $mixed 这是一个混合类型
    * @return array 返回类型
    */
    public function actionShowHouseResouce()
    {
        try{
            $houseId = Yii::$app->request->get('house_id',null);
            if(empty($houseId)){
                throw new \Exception('error');
            }
            $landlord = LandlordLogic::getInstance();
            $res = $landlord->showHouseDetailInfo($houseId);
            return $this->returnData($res);
        }catch (\Exception $e){
            return $this->returnData($e->getMessage(),false);
        }
    }

    /**
    * 提供房源创建时期所需要的展示设施信息列表
    *
    * @access public
    * @param mixed $arg1 参数一的说明
    * @param mixed $mixed 这是一个混合类型
    * @return array 返回类型
    */
    public function actionFasilityInfo()
    {
        $landlord = LandlordLogic::getInstance();
        return $landlord->fasilityInfo();
    }

    /**
    * 房东出租的行为动作
    *
     * 出租其实就是房东已经把这间房子租出去了，然后需要在此后台补充出租的信息
     * 那么将出租的信息（出租信息为合同信息）提交在此api，
     * 由此api进行对应的信息补录，以及状态修改
    * @access public
    * @param mixed $arg1 参数一的说明
    * @return array 返回类型
    */
    public function actionCreateContract()
    {
        $tran = Yii::$app->db->beginTransaction();
        try{
            $post = Yii::$app->request->post();
//            $post = $this->t();s
            $landlord = LandlordLogic::getInstance();
            $res =  $landlord->createContract($post);
            $tran->commit();
            return $this->returnData($res);
        }catch (\Exception $e){
            $tran->rollBack();
            return $this->returnData([],$e);
        }
    }
    /**
    * 为创建合同服务的房间费用数据api提供接口
    * 用于展示该房间或套房在创建时的费用的编辑信息
    * @access public
    * @return array 返回类型
    */
    public function actionHouseCostInfo(){}

    public function t(){
        $ty = <<<sfsgfdsg
{
    "uid": 111222, 
    "tenement_name": "科比",
    "tenement_phone": 1358987786, 
    "tenement_sex": 0, 
    "tenement_identity": "421223199709232347",
    "rent": 2, 
    "cash_pledge": 9, 
    "pay_way": "1,3",
    "cost_ids": [
                   {
                       "names":"3", 
                      "cost_type":"2",
                      "cost_way":"3",
                      "charge_mode":"3",
                      "cost_data":"2",
                      "cost_unit":"4",
                      "min":"3",
                      "period":"4",
                      "time":"3"
                   }
      ],
    "meter_reading": [
                   {
                       "names":"3", 
                      "house_id":"2",
                      "values":"3",
                      "type":"0"
                   }
     ],      
    "inform_days": 5,
    "next_time": "2018-9-8", 
    "start_time": "2018-9-8", 
    "end_time": "2018-9-8"
}
sfsgfdsg;
     $rt = json_decode($ty,true);
     return $rt;
    }
}
